home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
math
/
nrpas13
/
twofft.dem
< prev
next >
Wrap
Text File
|
1991-04-29
|
1KB
|
57 lines
PROGRAM d12r2(input,output);
(* driver for routine TWOFFT *)
CONST
n=32;
n2=64; (* n2=2*n *)
per=8;
pi=3.1415926;
TYPE
glnarray = ARRAY [1..n] OF real;
gl2narray = ARRAY [1..n2] OF real;
gldarray = gl2narray;
VAR
i,isign : integer;
data1,data2 : glnarray;
fft1,fft2 : gl2narray;
PROCEDURE prntft(data : gldarray; nn : integer);
VAR
ii,mm,n : integer;
BEGIN
writeln('n':4,'real(n)':13,'imag.(n)':13,'real(N-n)':12,'imag.(N-n)':13);
writeln (0:4,data[1]:14:6,data[2]:12:6,data[1]:12:6,data[2]:12:6);
mm := nn DIV 2;
FOR ii := 1 to mm DO BEGIN
n := 2*ii+1;
writeln (((n-1) DIV 2):4,data[n]:14:6,data[n+1]:12:6,
data[2*nn+2-n]:12:6,data[2*nn+3-n]:12:6)
END;
writeln (' press return to continue ...');
readln
END;
(*$I MODFILE.PAS *)
(*$I FOUR1.PAS *)
(*$I TWOFFT.PAS *)
BEGIN
FOR i := 1 to n DO BEGIN
data1[i] := round(cos(i*2.0*pi/per));
data2[i] := round(sin(i*2.0*pi/per));
END;
twofft(data1,data2,fft1,fft2,n);
writeln ('fourier transform of first function:');
prntft(fft1,n);
writeln ('fourier transform of second function:');
prntft(fft2,n);
(* invert transform *)
isign := -1;
four1(fft1,n,isign);
writeln ('inverted transform = first function:');
prntft(fft1,n);
four1(fft2,n,isign);
writeln ('inverted transform = second function:');
prntft(fft2,n)
END.